{% extends "howto" %}

{% block main %}
<h2>Ajouter des tests unitaires</h2>

<p>Vous pouvez ajouter des test unitaires et les exécuter directement depuis l'interface d'administration.</p>

<ol>
    <li>
        <p>Ecrivez les classes de test et placez-les quelquepart dans votre kit. Un dossier <q>tests/</q> semble approprié. Webappkit supporte actuellement <a href="http://simpletest.org" class="link">Simple Test</a>, mais d'autres librairies de tests pourront être ajoutées dans le futur.</p>
    </li>
    <li>
        <p>Editez le fichier de configuration du kit afin d'ajouter un outil <q>tests</q> comme ci-dessous :</p>
        <code>[tools]
<var>tests</var> = "SimpleTestTool"</code>
    </li>
    <li>
        <p>Creez un fichier <q>tests.tool.ini</q> à la racine du kit (comme pour n'importe quel <em>outil</em>) et listez les classes de test comme ci-dessous :</p>
        <code>[classes]
; test_case_class = "path/to/file"
firsttestcase = "tests/first.php"
secondtestcase = "tests/second.php*"</code>
        <p>Comme vous voyez, il est possible comme pour les fichiers de librairie d'avoir un fichier pour chaque version de PHP.</p>
    </li>
    <li>
        <p>Allez sur la page du kit au sein de l'interface d'administration poru consulter le résultat des tests.</p>
    </li>
</ol>

<h3>Avec une base de données de test</h3>

<p>Quelquefois il est nécessaire de tester du code utilisant une base de données. Afin d'eviter de recourir aux objets fantaise et de préserver les vértitables données, il est souhaitable d'utiliser une base de donénes de test. C'est la raison d'être de <q>SimpleTestMysqlTool</q> disponible dans le kit <q>webappkit.simpletest.mysql</q>.</p>

<ol>
    <li>
        <p>Ecrivez vos classes de tests comme vu plus haut.</p>
    </li>
    <li>
        <p>Editez le fichier de configuration du kit comme ci-dessous :</p>
        <code>[load_kits]
n = "webappkit.simpletest.mysql"

[tools]
tests = "SimpleTestMysqlTool"</code>
    </li>
    <li>
        <p>Creez un fichier <q>tests.tool.ini</q> et listez vos classes de test normalement. Mais vous pouvez également définir des données de conenxion et de création d'un environnement de test avec des requetes de creation SQL qui seront exécutées avant les tests.</p>
        <code>[classes]
; your test cases there

[db]
host = "localhost"
user = ""
pwd = ""
name = "unit_tests"
; unit tests database name
encoding = "utf8"
; character encoding for database creation and connexion
create = 1
; if true, will try to create the database
drop = 0
; if true, will drop the database after tests

[tables]
table_name = "Table creation SQL query"
; set your table creation queries there.
; ATTENTION ! Ces tables seront détruites avant chaque campagne de tests !

[data]
n = "Data row creation SQL query"</code>
    </li>
    <li><p>Allez à la page du kit pour consulter les résultats.</p></li>
</ol>
{% endblock %}
